Entrega 5¶

DL¶

Entrena un modelo de deep learning con tus propias imágenes. Puedes utilizar la herramienta ultralytics y apoyarte en el ejemplo code/DL/yolotrain. Otra posibilidad es reproducir el ejemplo code/DL/UNET.¶

Para realizar este ejercicio, he tomado como referencia el directorio code/DL/yolotrain donde se ejecuta el fichero facelabel.py para obtener imágenes de referencia que reconocen la boca de una persona.

Estas se utilizan para entrenar un modelo de yolo ejecutando el comando yolo detect train data=boca.yaml model=yolo11n.pt epochs=200 imgsz=640 augment=True.

Una vez entrenado el modelo, se ejecuta el programa yolo_run.py para que reconozca dicha boca.

Para ello, he utilizado una herramienta llamada labellmg la cual nos permite etiquetar imágenes de manera manual. Esto se puede observar en la siguiente imagen donde seleccionamos una diana y la etiquetamos como tal para poder entrenar el modelo posteriormente:

image.png

image-5.png

Tras ello, he entrenado el modelo de yolo, para lo cual he necesitado varias cosas.

  • Tener definido un fichero diana.yaml con el siguiente contenido:

image-2.png

  • Para cumplir con el contenido del fichero anterior, he tenido que crear previamente los directorios train y val para guardar las imágenes etiquetadas manualmente con la herramienta labellmg, cuyo contenido es, en ambos casos, dos directorios con los nombres images y labels. La jerarquía de ficheros queda con la siguiente estructura:

image-4.png

  • Esto es necesario para contener ciertas imágenes para el entrenamiento del modelo, y otras para su validación.

  • Tras ello, al estar en Windows, he necesitado ejecutar el siguiente comando para no tener errores con las librerías duplicadas. set KMP_DUPLICATE_LIB_OK=TRUE

Una vez cumplidos estos requisitos, he ejecutado el comando yolo detect train data=diana.yaml model=yolo11n.pt epochs=200 imgsz=640 augment=True para comenzar el entrenamiento del modelo, obteniendo como salida lo siguiente:

image-3.png

Esto hará 200 iteraciones para entrenar el modelo, aunque en la imagen solo se aprecian 3.

Tras entrenar el modelo, se ha generado el directorio runs, el cual contiene, entre otras cosas, el mejor modelo obtenido del entrenamiento.

Este modelo llamado best.pt, es usado en el fichero yolo_run.py para reconocer una diana.

El resultado de esa ejecución es el siguiente, donde como podemos comprobar, es el esperado:

image-6.png

Sin embargo, la precisión no es alta, probablemente porque hemos entrenado el modelo con pocas imágenes.

Tras haber entrenado un un numero mayor de imágenes, se puede observar como la precisión aumenta considerablemente:

image-7.png

Las conclusiones obtenidas después de este segundo intento han sido que, en primer lugar, al tener una mayor cantidad de imágenes, el modelo entrena bastante mejor. Además, al haber vuelto a tomar las fotos, esta vez durante el día, se obtiene una mejor calidad de imagen, sobre todo en la iluminación, lo cual podría estar entorpeciendo el aprendizaje del modelo en el primer intento.